package org.seckill.dao;

import org.apache.ibatis.annotations.Param;
import org.seckill.entity.Seckill;

import java.util.Date;
import java.util.List;

public interface SeckillDao {

    // 减库存 (killTime 执行减库存的时间 对应数据库中的 creatTime）
    // 如果影响行数 > 1, 表示更新的记录行数
    int reduceNumber(@Param("seckillId") long seckillId, @Param("killTime") Date killTime);

    // 查询需求（根据 id 查询秒杀对象）
    Seckill queryById(long seckillId);

    // 根据偏移量查询秒杀商品列表
    // offset：偏移量， limit：在偏移量之后取多少条记录

    // java 编程语言的问题：
    // java 没有保存形参的记录：queryAll(int offset, int limit) ->java 运行时参数变为 queryAll(arg0，arg1）
    // 一个参数时没有问题，当有多个参数时要告诉 MyBatis 哪个参数叫什么名字 这样在 xml 里通过 #{} 提取参数时 MyBatis 才能找到具体值
    // 具体做法：修改接口 -> 增加 @Param 注解 说明形参是什么
    List<Seckill> queryAll(@Param("offset") int offset, @Param("limit") int limit);
}
